主题
内存模块总览 - Overview
本分类做什么
在 目标进程 中 搜索 特征数据、按地址读写 标量与缓冲区,并提供 类型转换、模块基址、远程 API、Hook、虚拟内存 等扩展。与 DMA 的 物理侧/设备侧 读写互补:本分类以 逻辑地址与进程上下文 为主(权限与保护策略仍受限)。
一、搜索类:Find* 系列
| 模式 | 接口形态 | 差异 |
|---|---|---|
| 整数 | FindInt / FindIntEx | Ex 通常带 步进/范围/多结果 等扩展(见各页)。 |
| 浮点 | FindFloat / FindFloatEx | 同上。 |
| 双精度 | FindDouble / FindDoubleEx | 同上。 |
| 字符串 | FindString / FindStringEx | 编码与结束符处理见详情页。 |
| 二进制 | FindData / FindDataEx | 特征码/数组模式搜索。 |
选型:不确定对齐方式 → 优先 Ex 并设步进;已知唯一特征 → 非 Ex 可能更简单。
二、读取类:Read*(Addr 后缀含义)
| 命名 | 含义 |
|---|---|
ReadInt / ReadFloat / … | 按 默认约定 读(句柄/进程由上下文决定,见详情页)。 |
ReadIntAddr 等带 Addr | 显式 目标地址 参数,适合已有指针场景。 |
ReadData / ReadDataAddr | 原始字节块。 |
ReadDataToBin / ReadDataAddrToBin | 读到 二进制缓冲区(与 FreeMemoryPtr 等配对)。 |
差异:Addr 变体强调 绝对地址;非 Addr 可能结合 当前绑定窗口/进程 解释 hwnd(与 SetMemoryHwndAsProcessId 联动)。
三、写入类:Write*
| 类型 | 接口 |
|---|---|
| 标量 | WriteIntAddr、WriteFloat 等 |
| 缓冲 | WriteData、WriteDataAddr、WriteDataFromBin、WriteDataAddrFromBin |
注意:写 可执行页/受保护页 常需先 VirtualProtectEx;错误写入会导致 目标崩溃。
四、地址与转换辅助
| 接口 | 用途 |
|---|---|
Int32ToInt64 / Int64ToInt32 | 句柄/指针宽窄转换。 |
StringToData、FloatToData、DoubleToData | 与搜索模式或写入缓冲互转。 |
五、模块与远程调用
| 接口 | 差异 |
|---|---|
GetModuleBaseAddr、GetModuleSize | 取模块 基址与大小,用于偏移计算。 |
GetRemoteApiAddress | 解析 远程进程 中 API 地址。 |
HookRemoteApi / UnhookRemoteApi | 远程 Hook(高风险,需理解调用约定)。 |
六、虚拟内存
| 接口 | 说明 |
|---|---|
VirtualAllocEx、VirtualFreeEx、VirtualProtectEx、VirtualQueryEx | 在目标进程 分配/释放/改保护/查询 内存块。 |
七、全局开关
| 接口 | 说明 |
|---|---|
| SetMemoryHwndAsProcessId | 将后续接口中的 hwnd 解释为 PID(或反之,以详情页为准),改变所有内存 API 的句柄语义。 |
八、与 DMA 的快速对比
| 场景 | 优先 |
|---|---|
| 普通用户态进程、有合法句柄 | 内存 分类 |
| 虚拟机/物理内存采集卡、绕过部分用户态限制 | DMA 分类 |
九、快速选型
| 需求 | 建议 |
|---|---|
| 特征码找地址 | FindDataEx → 得到地址 → Read* 验证 |
| 改某偏移血量 | GetModuleBaseAddr + 偏移 + WriteInt |
| Hook 远程 API | GetRemoteApiAddress + HookRemoteApi(慎用) |
